package com.cy;

import com.cy.pj.sys.service.realm.ShiroRealm;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition;
import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DbpmsApplication {
    public static void main(String[] args) {
        SpringApplication.run(DbpmsApplication.class,args);
        System.out.println("服务已启动！");
    }

    //@Bean标书方法时，标识方法的返回值交给Spring管理，bean的名字默认为方法名
    @Bean
    public Realm realm(){
        return new ShiroRealm();
    }

    //基于此对象定义过滤规则，例如哪些请求必须要求认证，哪些不需要
    @Bean
    public ShiroFilterChainDefinition shiroFilterChainDefinition() {
        DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
        //配置/user/login/**开头的资源，可以匿名访问(不用登录就可以访问),
        //其中 anon 为 shiro 框架指定的匿名过滤器，匿名访问
        chainDefinition.addPathDefinition("/user/login/**", "anon");
        //配置登出操作
        chainDefinition.addPathDefinition("/user/logout", "logout");
        //配置以/**开头的资源必须都要经过认证，
        //其中 authc 为 shiro 框架指定的认证过滤器
        chainDefinition.addPathDefinition("/**", "authc");
        return chainDefinition;
    }
}
